package com.yunnuo.proxy.factory;

import com.yunnuo.proxy.handler.DebugInvocationHandler;

import java.lang.reflect.Proxy;

/**
 * 获取理对象的工厂类
 *
 * @author yunnuo
 * @since 2022-03-18
 */
public class JdkProxyFactory {
    /**
     * 主要通过Proxy.newProxyInstance（）方法获取某个类的代理对象
     *
     * @param target 目标
     * @return {@link Object}
     */
    public static Object getProxy(Object target) {
        // 目标类的类加载
        return Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                // 代理需要实现的接口，可指定多个
                target.getClass().getInterfaces(),
                // 代理对象对应的自定义 InvocationHandler
                new DebugInvocationHandler(target));
    }
}
